package interfaz;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;

import java.awt.Font;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.SQLException;
import java.util.Vector;

import javax.swing.SwingConstants;

import modelo.Aula;
import modelo.CentroEstudios;
import modelo.Equipo;

public class VEquipos extends JInternalFrame {
	
	private CentroEstudios centroEstudios;
	private JPanel panel;
	private JPanel panel2;
	private JTextField txtcodEquipo;
	private JComboBox cmbAulas;
	private JButton btnModificar;
	private JTable table;
	private JScrollPane scrollPane;
	private Vector<Equipo> vEquipos;
	private Vector<Aula> vAulas;
	
	private boolean modificar = false;

	/**
	 * Create the frame.
	 */
	public VEquipos(CentroEstudios centroEstudios) {
		
		this.centroEstudios = centroEstudios;
		this.vAulas = this.centroEstudios.vAulas;
		setClosable(true);
		setTitle("EQUIPOS");
		
		panel = new JPanel();
		panel.setBounds(100, 100, 450, 470);
		getContentPane().add(panel, BorderLayout.NORTH);
		panel.setLayout(new FlowLayout(FlowLayout.LEFT, 5, 5));
		
		JLabel lblCodEquipo = new JLabel("Código de equipo:");
		lblCodEquipo.setHorizontalAlignment(SwingConstants.CENTER);
		panel.add(lblCodEquipo);
		
		txtcodEquipo = new JTextField();
		panel.add(txtcodEquipo);
		txtcodEquipo.setColumns(3);
		
		panel2 = new JPanel();
		panel.add(panel2);
		panel2.setLayout(new BorderLayout(0, 0));
		
		JLabel lblAula = new JLabel("Aula:");
		panel.add(lblAula);
		lblAula.setHorizontalAlignment(SwingConstants.RIGHT);
		
		cmbAulas = new JComboBox(vAulas);
		cmbAulas.setSelectedIndex(0);
		cargarCombo();
		panel.add(cmbAulas);
		
		btnModificar = new JButton("Modificar");
		btnModificar.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				if (table.getSelectedRow() == -1){
					JOptionPane.showMessageDialog(null, "Tienes que seleccionar un equipo", "Equipos", JOptionPane.WARNING_MESSAGE);
				}else{
					Equipo equipo = vEquipos.elementAt(table.getSelectedRow());
					modificar = true;
					txtcodEquipo.setText(equipo.getIdEquipo());
					cmbAulas.setSelectedIndex(comprobarIndice(equipo.getCodAula()));
				}
			}
		});
		getContentPane().add(btnModificar, BorderLayout.SOUTH);
		
		JButton btnAceptar = new JButton("Aceptar");
		panel.add(btnAceptar);
		
		btnAceptar.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				if (comprobarCampos()){
					Equipo equipo = new Equipo(txtcodEquipo.getText(), cmbAulas.getSelectedItem().toString());
					if (!modificar){
						try{
							VEquipos.this.centroEstudios.crearEquipo(equipo);
							JOptionPane.showMessageDialog(null, "Equipo creado correctamente", "Equipos", JOptionPane.INFORMATION_MESSAGE);
							/*try {
								VAulas.this.centroEstudios.altaAulas(aula);
								JOptionPane.showMessageDialog(null, "Aula creada correctamente.","Correcto", JOptionPane.INFORMATION_MESSAGE);
							} catch (SQLException e1) {
								// TODO Auto-generated catch block
								JOptionPane.showMessageDialog(null, "No se ha podido crear el aula.","Error", JOptionPane.ERROR_MESSAGE);
							}*/
						} catch (SQLException sqle) {
							JOptionPane.showMessageDialog(null, "Error al crear el equipo.","Equipo", JOptionPane.ERROR_MESSAGE);
						}
					}else{
						try {
							VEquipos.this.centroEstudios.modificarEquipo(equipo);
							JOptionPane.showMessageDialog(null, "Equipo modificado correctamente", "Equipo", JOptionPane.INFORMATION_MESSAGE);
							modificar = false;
						} catch (SQLException e1) {
							// TODO Auto-generated catch block
							JOptionPane.showMessageDialog(null, "Error al modificar el equipo.","Equipo", JOptionPane.ERROR_MESSAGE);
						}
					}
					recargar();
				}else{
					JOptionPane.showMessageDialog(null, "Introduzca rellene todos los campos.", "Advertencia", JOptionPane.WARNING_MESSAGE);
				}
			}
		});

	}
	
	private void cargarCombo(){
		for (int i=0;i<vAulas.size();i++){
			cmbAulas.addItem(vAulas.elementAt(i));
		}
	}
	
	private int comprobarIndice(String codAula){
		int indice = 0;
		for (int i=0;i<vAulas.size();i++){
			if (vAulas.elementAt(i).getIdAula().equals(codAula)){
				indice = i;
			}
		}
		return indice;
	}
	
	/*
	 * Devuelve false si los campos están vacíos
	 */
	private boolean comprobarCampos() {
		if ("".equalsIgnoreCase(txtcodEquipo.getText())){
			return false;
		}else{
			return true;
		}
	}
	
	public void setVisible(boolean b){
		super.setVisible(b);
		if(b) recargar();
	}
	
	private void recargar(){
		vEquipos = centroEstudios.vEquipos;
		
		Object rowData[][] = null;
		Object columnas[] = {"ID Equipo","Aula"};
		
		rowData = new Object[vEquipos.size()][2];
		for(int i=0;i<vEquipos.size();i++){
			Equipo equipo = vEquipos.elementAt(i);
			rowData[i][0] = equipo.getIdEquipo();
			rowData[i][1] = equipo.getCodAula();	
		}
		
		table = new JTable(rowData,columnas){
			public boolean isCellEditable(int rowIndex, int vColIndex){
				return false;
			}
		};
		table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		
		scrollPane = new JScrollPane(table);
		panel2.removeAll();
		panel2.add(scrollPane, BorderLayout.CENTER);
		//panel.repaint();
		
		//scrollPane.setViewportView(table);
		getContentPane().removeAll();
		getContentPane().add(panel, BorderLayout.NORTH);
		getContentPane().add(panel2, BorderLayout.CENTER);
		getContentPane().add(btnModificar, BorderLayout.SOUTH);
	}
}
